template< typename T >
void EffectParameter::Set( const T& value )
{
    // When when no specialization is defined, 
    // just "box" it in an any type and try to determine
    // the correct type based on type of the Cg parameter.
    SetValue( boost::any(value) );
}

template< typename T >
const T& EffectParameter::Get() const
{
    assert( m_bIsValid );
    // Try to cast our internal value to the requested type.
    // This might throw an exception if you try to get a parameter
    // of a different type than what is stored in the parameter.
    return boost::any_cast<T>(m_ParameterValue);
}

